#ifndef ARRAY_INCLUDED
#define ARRAY_INCLUDED

#define T Array_T
typedef struct T *T;

T     Array_new(int length, int size);
void  Array_free(T *array);
int   Array_length(T array);
int   Array_size(T array);
void* Array_get(T array, int i);
void* Array_put(T array, int i, void *elem);
void  Array_resize(T array, int length);
T     Array_copy(T array, int length);

#undef T

#endif

